import type {
  EntityApi,
  EntityReq,
  EntityModel,
  EntityList,
  EntityPage,
  EntityTotal,
  EntityKey,
  EntityKeyList,
  EntityCreateReq,
  EntityUpdateReq,
  EntityExportReq,
  EntityImportReq
} from "jmash-core";

//数据字典接口
export interface DictEntryApi extends EntityApi {

}

//数据字典查询
export interface DictEntryReq extends EntityReq {
  typeCode?: string;
  //字典编码
  dictCode?: string;
  //是否包含启用
  hasEnable?: boolean;
  //是否启用
  enable?: boolean;
}

//数据字典实体 
export interface DictEntryModel extends EntityModel {
  //字典类型编码
  typeCode: string;
  //字典编码
  dictCode: string;
  //字典名称
  dictName: string;
  //排序
  listOrder?: number;
  //是否启用
  enable: boolean;
  //描述
  description?: string;
}

//数据字典列表
export interface DictEntryList extends EntityList {
  //内容
  results: Array<DictEntryModel>;
}

// 数据字典分页 
export interface DictEntryPage extends EntityPage {
  //当前页内容
  results: Array<DictEntryModel>;
  //本页小计
  subTotalDto: DictEntryModelTotal;
  //合计
  totalDto: DictEntryModelTotal;
}

// 合计 
export interface DictEntryModelTotal extends EntityTotal {
  //总记录数
  totalSize: number;
}


// 数据字典主键 
export interface DictEntryKey extends EntityKey {
  // 租户
  tenant?: string;
  dictCode?: string;
  typeCode?: string;
}

//数据字典List
export interface DictEntryKeyList extends EntityKeyList {
  // 租户
  tenant: string;
  dictEntryKey?: Array<DictEntryKey>;
}

// 数据字典新增实体 
export interface DictEntryCreateReq extends EntityCreateReq {
  //字典类型编码
  typeCode?: string;
  //字典编码
  dictCode?: string;
  //字典名称
  dictName?: string;
  //排序
  listOrder?: number;
  //是否启用
  enable?: boolean;
  //描述
  description?: string;
}

// 数据字典修改实体 
export interface DictEntryUpdateReq extends EntityUpdateReq {
  //字典类型编码
  typeCode?: string;
  //字典编码
  dictCode?: string;
  //字典名称
  dictName?: string;
  //排序
  listOrder?: number;
  //是否启用
  enable?: boolean;
  //描述
  description?: string;
}

export type DictEntryFormReq = (DictEntryCreateReq | DictEntryUpdateReq);

//导出请求
export interface DictEntryExportReq extends EntityExportReq {
  //筛选条件
  req: DictEntryReq;
}



// 上移下移
export interface DictEntryMoveKey {
  // 租户
  tenant?: string;
  dictCode?: string;
  typeCode?: string;
  up?: boolean;
}

// 启用/禁用
export interface DictEntryEnableKey {
  // 租户
  tenant?: string;
  dictCode?: string;
  typeCode?: string;
  enable?: boolean;
}





